The World-Wide Web provides a mechanism by which users can retrieve documents from servers. Users run Web browsers, such as Netscape Navigator (Navigator is a trademark of Netscape Communications Corporation) or Internet Explorer (Internet Explorer is a trademark of Microsoft Corporation) on desktop computers. These browsers use the Hyper-Text Transfer Protocol (HTTP) to issue requests to servers for particular documents or other content. (It should be noted that the World-Wide Web supports the use of several alternative protocols, including the File Transfer Protocol (FTP) and Gopher protocol.)
Upon receiving these browser requests, the server locates the document and returns it to the browser which, in turn, renders it for the user. These documents are typically authored in the Hyper-Text Markup Language (HTML), though other markup languages such as the Wireless Markup Language (WML), Voice Markup Language (Voice XML), and eXtensible Markup Language (XML) are in common use.
Modern Web servers can also generate documents dynamically based on information contained in the request about the particular user and the particular browser making the request. For example, the User-Agent header in the HTTP protocol typically carries the identity of the browser software from which the request originated. Additional information in the HTTP protocol can identify the user. At the Web server, a Common Gateway Interface (CGI) program, Active Server Page (ASP) program, or Java servlet can analyze the User-Agent and user information to select which content to include in the returned document and to determine how best to format the returned document. This concept of personalization is vital to today's Web because it ensures that users receive desired information in a form that is best shown on the client browser. However, existing methods of personalization are also limited because they require the server software to explicitly handle each type of browser independently.
Currently, there is a proliferation of new types of Web-connected devices, including wireless laptops, cellular phones, personal digital assistants (PDAs), automotive computers, intelligent household appliances, and home gateways. These devices have widely varying user interface capabilities, installed software, and network connectivity. As the number of browsers is growing, servers are burdened with the increasingly complex task of personalizing content for each of these different devices.
New standards are emerging to allow devices to describe their user interface capabilities, installed software, user preferences, and network connectivity in more abstract ways. The Composite Capability and Preference Profiles (CC/PP) specification published by the World-Wide-Web Consortium (W3C) describes a framework for providing this information within each HTTP request. The Wireless Application Protocol (WAP) Forum has defined a similar method (called User Agent Profiles, or UAProf) for describing this information within each Wireless Session Protocol (WSP) request. (The WSP is a form of HTTP that has been optimized for use over low-bandwidth wireless networks.)
As the range of available client information grows, it can become impractical for a device to provide all of that information with each request. Moreover, a user who is sensitive to privacy may not want client information to be provided within every Web document request. However, with today's technology, there is no way for a server to indicate which client characteristics does it actually use or require for dynamically generating personalized content for the device. Consequently, a client must simply include its entire profile with every request to ensure that the server receives the information that it needs.
Therefore, a need exists for a method and system that allows Web servers to indicate which device, user, software, and network properties can it use to generate personalized content for the requesting user. The Web server also needs to indicate which properties are actually required for it to generate any meaningful content at all. Using this mechanism, the client can optionally query the user for permission before including the requested information in the request. Using this mechanism, the client furthermore can save network bandwidth by only transmitting information that the server will use.